<?php

namespace app\user\controller;

use core\{Session, Captcha};

class Index
{
    /**
     * 用户首页
     */
    public function index()
    {
        echo 'user index';
        // return abort(404);
    }

    /**
     * 我的个人资料及发表的帖子列表
     */
    public function profile()
    {
        $url_id = segment(3, 'int');
        $user_id = session('user_id');
        $user    = model('user')->find($url_id);

        if (!$user) {
            return abort(404);
        }

        // 查询用户帖子列表
        $posts = model('post')->getListByUserId($user_id);

        $data = [
            'page_title' => '用户资料',
            'user'       => $user,
            'posts'      => $posts,
        ];

        // 使用公共模板
        template('public', $data);
    }

    /**
     * 我的回帖
     */
    public function replies()
    {
        $user_id = segment(3, 'int');
        $user    = model('user')->find($user_id);

        if (!$user) {
            return abort(404);
        }

        // 查询用户回复列表
        $replies = model('comment')->getListByUserId($user_id);

        // dd($replies[0][0]->post_id);

        $data = [
            'page_title' => '用户资料',
            'user'       => $user,
            'replies'    => $replies,
        ];

        // 使用公共模板
        template('public', $data);

    }

    /**
     * 我喜欢的
     */
    public function likes()
    {
        $user_id = segment(3, 'int');
        $user    = model('user')->find($user_id);

        if (!$user) {
            return abort(404);
        }

        // 查询用户喜欢列表
        $likes = model('like')->getListByUserId($user_id);

        $data = [
            'page_title' => '用户资料',
            'user'       => $user,
            'likes'      => $likes,
        ];

        // 使用公共模板
        template('public', $data);

    }

    /**
     * 收藏列表
     */
    public function fav()
    {
        $url_id = segment(3, 'int');
        $user    = model('user')::find($url_id);

        if (!$user) {
            return abort(404);
        }

        $favorites = model('fav')->getListByUrlId($url_id);

        $data = [
            'page_title' => '用户资料',
            'user'       => $user,
            'favorites'  => $favorites,
        ];

        // 使用公共模板
        template('public', $data);
    }

    /**
     * 编辑个人资料
     */
    public function edit()
    {
        login_check();

        $user_id = segment(3, 'int');
        $user    = model('user')->find($user_id);

        $data = [
            'page_title' => '用户资料',
            'user'       => $user,
        ];

        // 使用公共模板
        template('public', $data);
    }

    /**
     * 退出登录
     */
    public static function logout()
    {
        Session::destroy();
        go_back();
    }

    /**
     * 激活用户
     */
    public function activate()
    {

    }

    /**
     * 注销用户
     */
    public function unregister()
    {

    }

    /**
     * 忘记密码
     */
    public function forgot()
    {

    }

     /**
     * 修改密码
     */
    public function reset()
    {
        login_check();

        $user_id = session('user_id');
        $url_id  = segment(3, 'int');

        if ($user_id !== $url_id) {
            return abort(403);
        }

        $user = model('user')->find($user_id);
        $data = [
            'page_title' => '修改密码',
            'user'       => $user,
        ];

        // 使用公共模板
        template('public', $data);
    }

    /**
     * 修改头像页面
     */
    public function avatar()
    {
        login_check();

        $user_id = session('user_id');
        $url_id  = segment(3, 'int');

        if ($user_id !== $url_id) {
            return abort(403);
        }

        $user = model('user')->find($user_id);
        $data = [
            'page_title' => '头像',
            'user'       => $user,
        ];

        // 使用公共模板
        template('public', $data);
    }

    /**
     * 提交头像链接
     */
    public function photo()
    {
        if (REQUEST_TYPE === 'post') {
            $up = model('user')->uploadPhoto();
        }
    }

    /**
     * 生成验证码
     */
    public function captcha()
    {
        return (new Captcha())->make();
    }
}